package com.tencreat.domain.mall;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.tencreat.common.annotation.Excel;
import com.tencreat.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;


/**
 * 优惠券用户使用对象 mall_coupon_user
 *
 * @author tencreat
 * @date 2021-08-19
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
@ApiModel
@TableName("mall_coupon_user")
public class MallCouponUser extends BaseEntity<MallCouponUser>{
    private static final long serialVersionUID = 1L;


    /** $column.columnComment */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "ID")
    private Long id;


    /** 用户ID */
    @Excel(name = "用户ID")
    @ApiModelProperty(value= "用户ID")
    @TableField("`uuid`")
    private Long uuid;


    /** 优惠券ID */
    @Excel(name = "优惠券ID")
    @ApiModelProperty(value= "优惠券ID")
    @TableField("`coupon_id`")
    private Long couponId;


    /** 使用状态, 如果是0则未使用；如果是1则已使用；如果是2则已过期；如果是3则已经下架； */
    @Excel(name = "使用状态, 如果是0则未使用；如果是1则已使用；如果是2则已过期；如果是3则已经下架；")
    @ApiModelProperty(value= "使用状态, 如果是0则未使用；如果是1则已使用；如果是2则已过期；如果是3则已经下架；")
    @TableField("`status`")
    private Integer status;


    /** 使用时间 */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "使用时间", width = 30, dateFormat = "yyyy-MM-dd")
    @TableField("`used_time`")
    private LocalDateTime usedTime;


    /** 有效期开始时间 */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "有效期开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    @TableField("`start_time`")
    private LocalDateTime startTime;


    /** 有效期截至时间 */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "有效期截至时间", width = 30, dateFormat = "yyyy-MM-dd")
    @TableField("`end_time`")
    private LocalDateTime endTime;


    /** 订单ID */
    @Excel(name = "商城订单ID")
    @ApiModelProperty(value= "商城订单ID")
    @TableField("`order_id`")
    private Long orderId;

    /** 订单ID */
    @Excel(name = "店铺订单ID")
    @ApiModelProperty(value= "店铺订单ID")
    @TableField("`store_order_id`")
    private Long storeOrderId;

    /** 删除标志（0代表存在 2代表删除） */
    @TableLogic
    @TableField("`del_flag`")
    private String delFlag;






/*    *//** 租户ID *//*
    @Excel(name = "租户ID")
    @ApiModelProperty(value= "租户ID")
    @TableField("`tenant_id`")
    private Long tenantId;*/

    @TableField(exist = false)
    @ApiModelProperty(value= "优惠劵名称")
    private String couponName;

    /** 优惠金额， */
    @TableField(exist = false)
    @ApiModelProperty(value= "优惠金额")
    private BigDecimal discount;

    /** 优惠券介绍，通常是显示优惠券使用限制文字 */
    @TableField(exist = false)
    @ApiModelProperty(value= "优惠券介绍，通常是显示优惠券使用限制文字")
    private String desc;

    /** 最少消费金额才能使用优惠券。 */
    @TableField(exist = false)
    @ApiModelProperty(value= "最少消费金额才能使用优惠券,为0时就是无门槛消费券")
    private BigDecimal min;

    /** 商品限制类型:  0全商品, 1专区 2指定商品。 */
    @TableField(exist = false)
    @ApiModelProperty(value= "商品限制类型: 0全商品, 1指定商品。")
    private Integer goodsType;

    /** 商品限制值，goods_type如果是0则空集合，如果是1则是类目集合，如果是2则是商品集合。 */
    @TableField(exist = false)
    @ApiModelProperty(value= "商品限制值，goods_type如果是0则空集合，如果是1则是类目集合，如果是2则是商品集合。")
    private String goodsValue;

    @TableField(exist = false)
    @ApiModelProperty(value= "备注、说明")
    private String remarks;
}
